package com.unitd.frame.comm.utils.encrypt.base64;

import com.unitd.frame.comm.utils.CharsetUtils;

/**
 * @desc BASE64编码解码工具包
 * 依赖bcprov-jdk14-1.48.jar
 * @filename Base64Util.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date 2016-10-12
 */
public class Base64Util {

	/**
	 * @desc 将二进制数据编码为BASE64字符串
	 * @param bytes 二进制数据
	 * @return 编码后的BASE64字符串
	 */
	public static byte[] encodeToByte(byte[] bytes) {
		return Base64.encode(bytes);
	}

	/**
	 * @desc 讲二进制数据编码为BASE64字符串
	 * @param bytes 二进制数据
	 * @return 编码后的BASE64字符串
	 */
	public static String encode(byte[] bytes) {
		return new String(Base64.encode(bytes));
	}

	/**
	 * @desc 将BASE64字符串解码为二进制数据
	 * @param base64 BASE64字符串
	 * @return 解码后的二进制数据
	 */
	public static byte[] decode(String base64) {
		return Base64.decode(base64.getBytes());
	}

	/**
	 * @desc 将二进制数据编码为BASE64数据后,转换成SSO默认的编码格式的BASE64数据
	 * @param key 二进制数据
	 * @return 编码后的BASE64数据
	 */
	public static String encryptBASE64(byte[] key) {
		byte[] b = UrlBase64.encode(key);
		return new String(b, CharsetUtils.UTF_8);
	}

	/**
	 * @desc BASE64 decrypt
	 * @param key ASE64数据
	 * @return 解码后的二进制数据
	 */
	public static byte[] decryptBASE64(String key) {
		return UrlBase64.decode(key.getBytes(CharsetUtils.UTF_8));
	}
}